#define  _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
#include <assert.h>
#include "string.h"
//template <class T>
//class Stack
//{
//public:
//	Stack(size_t capacity = 4) 
//		:_a(nullptr)
//		,_capacity(0)
//		, _top(0)
//	{
//		if (capacity > 0)
//		{
//			_a = new T[capacity];
//			_capacity = capacity;
//			_top = 0;
//		}
//	}
//
//	~Stack()
//	{
//		delete[] _a;
//		_capacity = _top = 0;
//	}
//
//	void Push(const T& x)
//	{
//		if (_top == _capacity)
//		{
//			size_t newCaptcity = _capacity == 0 ? 4 : _capacity * 2;
//			T* tmp = new T[newCaptcity];
//
//			if (_a)
//			{
//				memcpy(tmp, _a, sizeof(T) * _top);
//				delete[] _a;
//			}
//
//			_a = tmp;
//			_capacity = newCaptcity;
//		}
//
//		_a[_top] = x;
//		++_top;
//	}
//
//	void Pop()
//	{
//		assert(_top > 0);
//		--_top;
//	}
//
//	bool Empey()
//	{
//		return _top == 0;
//	}
//
//	const T& Top()
//	{
//		assert(_top > 0);
//
//		return _a[_top-1];
//	}
//
//private:
//	T* _a = nullptr;
//	size_t _top = 0;
//	size_t _capacity = 0;
//};

//int main()
//{
//	try
//	{
//		Stack<int> st1(0);
//		Stack<int> st2;
//
//		Stack<int> st3;
//		st3.Push(1);
//		st3.Push(2);
//		st3.Push(3);
//		st3.Push(4);
//		st3.Push(5);
//
//		while (!st3.Empey())
//		{
//			cout << st3.Top() << " ";
//			st3.Pop();
//		}
//		cout << endl;
//
//	}
//	catch(const exception& e)
//	{
//		cout << e.what() << endl;
//	}
//
//	string s1;
//	string s2("111111");
//	cout << s1.max_size() << endl;
//	cout << s2.max_size() << endl;
//	cout << s1.capacity() << endl;
//	cout << s2.capacity() << endl;
//
//	return 0;
//}

int main()
{
	lch::test2();

	return 0;
}